package com.example.zlpermissionservice.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.example.zlpermissionservice.common.base.PageResponse;
import com.example.zlpermissionservice.dto.request.RoleReqDTO;
import com.example.zlpermissionservice.dto.response.RoleResDTO;
import com.example.zlpermissionservice.entity.Role;

import java.util.List;

/**
 * @Author zhenliu（孙凌岳）
 * @Description TODO
 * @Date 2025/6/14 19:41
 * @Version 1.0
 */
public interface IRoleService extends IService<Role> {
    /***
     * 初始化角色信息
     * 角色下拉框
     * @return
     */
    List<RoleResDTO> initRoles();

    /**
     *  查询用户对应角色
     * @param userId 查询条件
     * @return: List<Role>
     */
    public List<RoleResDTO> findRoleResDTOListByUserId(Long userId);

    /***
     *  查询用户对应的角色
     * @param userIds
     * @return
     */
    List<RoleResDTO> findRoleResDTOListInUserId(List<Long> userIds);

    /**
     * 多条件查询角色表分页列表
     * @param roleReqDTO
     * @param pageNum
     * @param pageSize
     * @return
     */
    PageResponse<RoleResDTO> findRolePage(RoleReqDTO roleReqDTO, int pageNum, int pageSize);

    /**
     * 修改角色信息
     * @param roleReqDTO
     * @return
     */
    Boolean updateRole(RoleReqDTO roleReqDTO);

    /**
     * 根据id删除角色
     *
     * @param roleId
     * @return
     */
    Integer deleteRoleById(Long roleId);

    /**
     * 新增角色
     * @param roleReqDTO
     * @return
     */
    RoleResDTO createRole(RoleReqDTO roleReqDTO);

    /**
     * 绑定默认角色
     * @param userId
     */
    void bindDefaultRole(Long userId);

    /**
     * 根据用户id获取用户角色码
     * @param userId
     * @return
     */
    Role getUserRole(Long userId);

    /**
     * 根据角色码获取角色id
     * @param roleCode
     * @return
     */
    Long getRoleIdByLabel(String roleCode);
}
